package io.renren.modules.app.wx;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import io.renren.common.exception.RRException;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;


/**
 * 微信用户工具类
 */
@Slf4j
public class WxUserInfoUtil {

    /**
     * 注意此方法如果没有获取到 openId 会抛出异常
     */
    public static String getOpenId(String appId, String code) {
        return getUserInfo(appId, code).getOpenid();
    }

    public static WxUserInfoVo getUserInfo(String appId, String code) {
        if (StrUtil.isBlank(appId) || StrUtil.isBlank(code)) {
            throw new RRException("获取用户信息异常，缺失必要参数");
        }
        HashMap<String, Object> paramMap = new HashMap<>(4);
        paramMap.put("appid", appId);
        paramMap.put("secret", WxAppIdEnum.getEnum(appId).getSecret());
        paramMap.put("js_code", code);
        paramMap.put("grant_type", "authorization_code");
        String result = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", paramMap);
        log.info("获取微信用户唯一标识：{}",result);
        if (JSONUtil.isJson(result)) {
            return JSONUtil.toBean(result, WxUserInfoVo.class);
        }
        throw new RRException("获取用户信息异常");
    }


}
